package com.integreight.onesheeld.shields.fragments; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import com.integreight.onesheeld.R; import com.integreight.onesheeld.enums.ArduinoPin; import com.integreight.onesheeld.model.ArduinoConnectedPin; import com.integreight.onesheeld.sdk.OneSheeldDevice; import com.integreight.onesheeld.shields.ShieldFragmentParent; import com.integreight.onesheeld.shields.controller.SliderShield; import com.integreight.onesheeld.utils.ConnectingPinsView; import com.integreight.onesheeld.utils.ConnectingPinsView.OnPinSelectionListener; import com.integreight.onesheeld.utils.customviews.VerticalSeekBar; public class SliderFragment extends ShieldFragmentParent<SliderFragment> { VerticalSeekBar seekBar; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.slider_shield_fragment_layout, container, false); } @Override public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) { seekBar = (VerticalSeekBar) v.findViewById(R.id.slider_fragment_seekbar); seekBar.setEnabled(false); seekBar.setMax(255); seekBar.setProgress(0); seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub ((SliderShield) getApplication().getRunningShields().get( getControllerTag())).setSliderValue(progress); } }); if ((getApplication().getRunningShields().get( getControllerTag())) != null) seekBar.setEnabled(true); } @Override public void doOnStart() { ConnectingPinsView.getInstance().reset( getApplication().getRunningShields().get(getControllerTag()), new OnPinSelectionListener() { @Override public void onSelect(ArduinoPin pin) { if (pin != null) { int pinCode = pin.microHardwarePin; (getApplication() .getRunningShields() .get(getControllerTag())) .setConnected(new ArduinoConnectedPin( pinCode, OneSheeldDevice.OUTPUT)); seekBar.setEnabled(true); } else { seekBar.setEnabled(false); } } @Override public void onUnSelect(ArduinoPin pin) { } }); // TODO Auto-generated method stub seekBar.removeCallbacks(null); seekBar.post(new Runnable() { @Override public void run() { if (seekBar != null && ((SliderShield) getApplication().getRunningShields().get( getControllerTag())).getSliderValue() > 0 && ((SliderShield) getApplication().getRunningShields().get( getControllerTag())).getSliderValue() <= 255) { seekBar.setProgress(((SliderShield) getApplication().getRunningShields().get( getControllerTag())).getSliderValue()); seekBar.refreshDrawableState(); seekBar.updateThumb(); } } }); ((SliderShield) getApplication().getRunningShields().get( getControllerTag())).setSliderHandler(new SliderShield.SliderHandler() { @Override public void setSliderValue(final int value) { seekBar.removeCallbacks(null); seekBar.post(new Runnable() { @Override public void run() { if (seekBar != null && value > 0 && value <= 255) { seekBar.setProgress(value); seekBar.refreshDrawableState(); seekBar.updateThumb(); } } }); } }); } private void initializeFirmata() { if (getApplication().getRunningShields().get(getControllerTag()) == null) getApplication().getRunningShields().put(getControllerTag(), new SliderShield(activity, getControllerTag())); } @Override public void doOnServiceConnected() { initializeFirmata(); } }